Amazon GuardDutyの通知をカスタマイズしてSlackに通知してみた
はじめに
先日AWS Chatbotの通知内容をカスタマイズできるアップデートがありました。
この機能を使うことで、Slackへの通知をより分かりやすくカスタマイズできるようになりました。今回はこのアップデートを活用してAmazon GuardDutyの通知をカスタマイズして通知してみます。
今までのChatbot経由の通知はこのような形式ですが、
こんな感じにカスタマイズしてみました。
やってみる
構成は「GuardDuty → EventBridgeルール → SNS → Chatbot → Slack」です。 SNSとChatbotの作成については既に作成済みの前提で進めます。未作成の場合は前述のアップデートブログを参考にしてください。
EventBridgeルールの作成
EventBridgeルールを作成していきます。
イベントパターンはテストのため全てのイベントを対象としています。
制御したい場合は以下のブログを参照してください。
ターゲットにはSNSトピックを指定します。
追加設定を開いて、「ターゲット入力を設定」から入力トランスフォーマー
を選択してください。
入力トランスフォーマーを設定のボタンから以下を設定します。
入力パス
{ "aws_account_id": "$.detail.accountId", "finding_id": "$.detail.id", "finding_type": "$.detail.type", "finding_title": "$.detail.title", "finding_description": "$.detail.description", "severity": "$.detail.severity", "region": "$.detail.region", "time": "$.time" }
テンプレート
{ "version": "1.0", "source": "custom", "content": { "textType": "client-markdown", "title": ":information_source: GuardDuty Finding | <region> | Account: <aws_account_id>", "description": "GuardDutyが脅威を検知しました。イベント内容を確認してください。 \n • *タイトル*: <finding_title>\n • *検出結果タイプ*: <finding_type>\n • *詳細*: <finding_description>\n • *AWSアカウントID*: <aws_account_id>\n • *リージョン*: <region>\n • *緊急度*: <severity>\n • *日時*: <time>", "nextSteps": [ "AWSコンソールで詳細を確認しましょう。\n https://<region>.console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<finding_id>¯os=current&fId=<finding_id>", "AWSドキュメントを確認し、対応を検討しましょう。\nhttps://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_finding-types-active.html" ] } }
あとは保存して構築は完了です。
通知テスト
以下のブログを参考にサンプルイベントを1つ起こしてみます。
以下のコマンドをCloudShellで実行してみます。
aws guardduty create-sample-findings \ --detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \ --finding-types "Backdoor:EC2/DenialOfService.Dns"
すると、すぐにGuardDutyの通知がSlackに届きました。
以前の通知内容よりも情報が増え、次のアクションが明確になったかと思います。
まとめ
GuardDutyの通知をカスタマイズしてSlackへ通知してみました。Chatbotを経由した元の通知でも十分見やすいですが、カスタマイズできることによって社内の運用により活用しやすくなったと思います。
今回作成した入力トランスフォーマーは一例なので、ぜひ運用に合わせて通知内容をカスタマイズしてみてください。